home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.5)
-
- import m2
- from m2 import bio_do_handshake as bio_do_ssl_handshake
- from cStringIO import StringIO
-
- class BIOError(Exception):
- pass
-
- m2.bio_init(BIOError)
-
- class BIO:
- m2_bio_free = m2.bio_free
-
- def __init__(self, bio = None, _pyfree = 0, _close_cb = None):
- self.bio = bio
- self._pyfree = _pyfree
- self._close_cb = _close_cb
- self.closed = 0
- self.write_closed = 0
-
-
- def __del__(self):
- if self._pyfree:
- self.m2_bio_free(self.bio)
-
-
-
- def _ptr(self):
- return self.bio
-
- bio_ptr = _ptr
-
- def fileno(self):
- return m2.bio_get_fd(self.bio)
-
-
- def readable(self):
- return not (self.closed)
-
-
- def read(self, size = None):
- if not self.readable():
- raise IOError, 'cannot read'
-
- if size is None:
- buf = StringIO()
- while None:
- data = m2.bio_read(self.bio, 4096)
- if not data:
- break
-
- continue
- return buf.getvalue()
- size is None
- if size == 0:
- return ''
- elif size < 0:
- raise ValueError, 'read count is negative'
- else:
- return m2.bio_read(self.bio, size)
-
-
- def readline(self, size = 4096):
- if not self.readable():
- raise IOError, 'cannot read'
-
- buf = m2.bio_gets(self.bio, size)
- return buf
-
-
- def readlines(self, sizehint = 'ignored'):
- if not self.readable():
- raise IOError, 'cannot read'
-
- lines = []
- while None:
- buf = m2.bio_gets(self.bio, 4096)
- if buf is None:
- break
-
- continue
- return lines
-
-
- def writeable(self):
- if not (self.closed):
- pass
- return not (self.write_closed)
-
-
- def write(self, data):
- if not self.writeable():
- raise IOError, 'cannot write'
-
- return m2.bio_write(self.bio, data)
-
-
- def write_close(self):
- self.write_closed = 1
-
-
- def flush(self):
- m2.bio_flush(self.bio)
-
-
- def reset(self):
- return m2.bio_reset(self.bio)
-
-
- def close(self):
- self.closed = 1
- if self._close_cb:
- self._close_cb()
-
-
-
- def should_retry(self):
- return m2.bio_should_retry(self.bio)
-
-
- def should_read(self):
- return m2.bio_should_read(self.bio)
-
-
- def should_write(self):
- return m2.bio_should_write(self.bio)
-
-
-
- class MemoryBuffer(BIO):
-
- def __init__(self, data = None):
- BIO.__init__(self)
- self.bio = m2.bio_new(m2.bio_s_mem())
- self._pyfree = 1
- if data is not None:
- m2.bio_write(self.bio, data)
-
-
-
- def __len__(self):
- return m2.bio_ctrl_pending(self.bio)
-
-
- def read(self, size = 0):
- if not self.readable():
- raise IOError, 'cannot read'
-
- if size:
- return m2.bio_read(self.bio, size)
- else:
- return m2.bio_read(self.bio, m2.bio_ctrl_pending(self.bio))
-
- getvalue = read_all = read
-
- def write_close(self):
- self.write_closed = 1
- m2.bio_set_mem_eof_return(self.bio, 0)
-
- close = write_close
-
-
- class File(BIO):
-
- def __init__(self, pyfile, close_pyfile = 1):
- BIO.__init__(self, _pyfree = 1)
- self.pyfile = pyfile
- self.close_pyfile = close_pyfile
- self.bio = m2.bio_new_fp(pyfile, 0)
-
-
- def close(self):
- self.closed = 1
- if self.close_pyfile:
- self.pyfile.close()
-
-
-
-
- def openfile(filename, mode = 'rb'):
- return File(open(filename, mode))
-
-
- class IOBuffer(BIO):
- m2_bio_pop = m2.bio_pop
- m2_bio_free = m2.bio_free
-
- def __init__(self, under_bio, mode = 'rwb', _pyfree = 1):
- BIO.__init__(self, _pyfree = _pyfree)
- self.io = m2.bio_new(m2.bio_f_buffer())
- self.bio = m2.bio_push(self.io, under_bio._ptr())
- self._under_bio = under_bio
- if 'w' in mode:
- self.write_closed = 0
- else:
- self.write_closed = 1
-
-
- def __del__(self):
- if getattr(self, '_pyfree', 0):
- self.m2_bio_pop(self.bio)
-
- self.m2_bio_free(self.io)
-
-
- def close(self):
- BIO.close(self)
-
-
-
- class CipherStream(BIO):
- SALT_LEN = m2.PKCS5_SALT_LEN
- m2_bio_pop = m2.bio_pop
- m2_bio_free = m2.bio_free
-
- def __init__(self, obio):
- BIO.__init__(self, _pyfree = 1)
- self.obio = obio
- self.bio = m2.bio_new(m2.bio_f_cipher())
- self.closed = 0
-
-
- def __del__(self):
- if not getattr(self, 'closed', 1):
- self.close()
-
-
-
- def close(self):
- self.m2_bio_pop(self.bio)
- self.m2_bio_free(self.bio)
- self.closed = 1
-
-
- def write_close(self):
- self.obio.write_close()
-
-
- def set_cipher(self, algo, key, iv, op):
- cipher = getattr(m2, algo, None)
- if cipher is None:
- raise ValueError, ('unknown cipher', algo)
-
- m2.bio_set_cipher(self.bio, cipher(), key, iv, op)
- m2.bio_push(self.bio, self.obio._ptr())
-
-
-
- class SSLBio(BIO):
-
- def __init__(self, _pyfree = 1):
- BIO.__init__(self, _pyfree)
- self.bio = m2.bio_new(m2.bio_f_ssl())
- self.closed = 0
-
-
- def set_ssl(self, conn, close_flag = m2.bio_noclose):
- self._pyfree = 0
- m2.bio_set_ssl(self.bio, conn.ssl, close_flag)
- if close_flag == m2.bio_noclose:
- conn.set_ssl_close_flag(m2.bio_close)
-
-
-
- def do_handshake(self):
- return m2.bio_do_handshake(self.bio)
-
-
-